/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package baseDatos;

import entidades.Sexo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Facundo
 */
public class SexoDAO {

    
     private String query;
     private Connection conDB;
     private PreparedStatement pst;

    public SexoDAO(Connection con) {
        this.conDB = con;
    }

    public SexoDAO() {
    }

    /**
     * @return the query
     */
    public String getQuery() {
        return query;
    }

    /**
     * @param query the query to set
     */
    public void setQuery(String query) {
        this.query = query;
    }

    /**
     * @return the conDB
     */
    public Connection getConDB() {
        return conDB;
    }

    /**
     * @param conDB the conDB to set
     */
    public void setConDB(Connection conDB) {
        this.conDB = conDB;
    }

    /**
     * @return the pst
     */
    public PreparedStatement getPst() {
        return pst;
    }

    /**
     * @param pst the pst to set
     */
    public void setPst(PreparedStatement pst) {
        this.pst = pst;
    }

    /*
     * Metodo que devuelve un objeto sexo de acuerdo al codigo char recibido por parametro
     */
    public Sexo getSexo(char sexo){
        Sexo sex = null;
        setQuery("select * from PC_SEXO where codigo_sexo='" + sexo + "'");
        sex = this.devolverSexo(getQuery());
        return sex;
    }

    public char getCodigoSexo(String nombre){
        char s = 0;
        String sql="select codigo_sexo from pc_sexo where nombre='"+nombre+"'";
        ResultSet rs = null;
        setQuery(sql);
        try {
            setPst(getConDB().prepareStatement(getQuery()));
            rs = getPst().executeQuery();
            while (rs.next()) {
                s=rs.getString("codigo_sexo").charAt(0);
            }
            getPst().close();
            rs.close();
        } catch (SQLException ex) {
            Logger.getLogger(SexoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return s;
    }

    /*
     * Metodo que devuelve un objeto sexo de acuerdo a la sentencia recibida por parametro
     */
    private Sexo devolverSexo(String sentencia) {
        Sexo sex = null;
        ResultSet rs = null;
        setQuery(sentencia);
        try {
            setPst(getConDB().prepareStatement(getQuery()));
            rs = getPst().executeQuery();
            while (rs.next()) {
                sex = new Sexo();
                sex.setNombre(rs.getString("codigo_sexo").charAt(0));
                sex.setDescripcion(rs.getString("nombre"));                
            }
            getPst().close();
            rs.close();
        } catch (SQLException ex) {
            Logger.getLogger(SexoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return sex;
    }

    /*
     * Metodo que devuelve un arrayList de sexos
     *
     */
    public ArrayList getSexos(){
        ArrayList todos = null;
        setQuery("select * from PC_SEXO");
        todos = this.devolverSexos(getQuery());
        return todos;
    }

    /*
     * Metodo que retorna un arrayList de sexo, de acuerdo a la sentencia
     * recibida como parametro de entrada
     */
    private ArrayList devolverSexos(String sentencia) {
        ArrayList todos = null;
        Sexo sex = null;
        ResultSet rs;
        setQuery(sentencia);
        try {
            todos = new ArrayList();
            setPst(getConDB().prepareStatement(getQuery()));
            rs = getPst().executeQuery();
            while (rs.next()) {
               sex = new Sexo();
               sex.setNombre(rs.getString("codigo_sexo").charAt(0));
               sex.setDescripcion(rs.getString("nombre"));
               todos.add(sex);
            }
            rs.close();
            getPst().close();
        } catch (SQLException ex) {
            Logger.getLogger(SexoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return todos;
    }
}
